package com.zimmur.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.zimmur.model.account.GoodsUser;
import com.zimmur.model.account.User;
import com.zimmur.model.zone.SharedProperty;

public interface IUserDao {
    User selectUserInfoByUserName(String userName);
    User selectUserInfoByWxID(String wxOpenId);
    User selectUserInfoByWbID(String wbOpenId);
    GoodsUser selectUserInfoByNickName(SharedProperty sharedProperty);
    User selectUserInfoByInviteCode(String inviteCode);
    /**
     * 根据用户ID获取用户信息
     * @param userId
     * @return User对象
     */
    User selectUserInfoByUserId(long userId);
    /**
     * 更新用户文章数
     * @param mp
     * @return
     */
    int updateUserTopicNum(long userId);
    /**
     * 更新用户关注数
     * @param mp
     * @return
     */
    int updateUserFollowNum(Map<String, Object> mp);
    int updateUserAuth(User user);
    int insert(User user);
    /**
     * 修改个人信息
     * @param user
     * @return
     */
    int updateUserinfo(User user);
    /**
     * 查找帐号是否存在
     * @return
     */
    Long selectUserNameAndUserPwd(User user);
    User selectUserIdAndUserPwd(User user);
    /**
     * 修改密码
     * @return
     */
    int updateUserPwd(User user);
    /**
     * 根据用户ID返回用户基本信息
     * @param userId
     * @return 返回对象GoodsUser
     */
    GoodsUser selectGoodsUserByUserId(long userId);
    
	/**
	 * 根据关注用户ID和被关注用户ID返回用户基本信息和是否被关注
	 * @param createUser 关注用户
	 * @param userId   被关注用户
	 * @return
	 */
    GoodsUser selectGoodsIsConcern(@Param(value="createUser")long createUser,@Param(value="userId")long userId);
    /**
	 * 根据关注用户ID和被关注用户ID返回用户基本信息和是否被关注
	 * @param createUser 关注用户
	 * @param userId     被关注用户
	 * @param userType   关注类型
	 * @return
	 */
    GoodsUser selectTopicIsConcern(@Param(value="createUser")long createUser,@Param(value="userId")long userId,@Param("userType")Integer userType);
    
    List<GoodsUser>selectUserInfoByLikeNickName(SharedProperty sharedProperty);
    
    int selectCountByLikeNickName(SharedProperty sharedProperty);
    
    Long selectByUserNameAndMobileNo(User user);
    /**
     * 微博用户取消授权
     * @param wbOpenId
     * @return
     */
    int updateCanelWeiboUid(String wbOpenId);
}